#!/bin/bash
test_netperf(){
    if [[ -n "$netperf_log_dir" ]];then
        if [[ "$mode" == 'auto' ]];then
            red_z_green_z "当前模式:" "自动"
        else
            if [[ -z "$server_ip" ]];then
                input '请输入对端IP地址,默认[ 192.168.0.10 ]' d_ip
            fi
            if [[ -z "$netperf_log_dir" ]];then
                input "请设置测试记录保存路径，默认----->[ ${netperf_log_dir} ]" netperf_log_dir
            fi
        fi
        mkdir -p $netperf_log_dir
        input_check "$netperf_log_dir" "测试记录保存路径" "/result/netperf" netperf_log_dir
        input_check "$d_ip" "对端IP地址(服务端)" '192.168.0.10' d_ip
        d_ip=$server_ip
        if [[ $mode == 'auto' ]];then
            if [[ -z "$sum_netperf" ]];then
                sum_netperf=3
            fi
        else
            input '请设置测试次数(仅限整数),默认[ 3 ]' sum_netperf
        fi
        input_check "$sum_netperf" "测试次数" '3' sum_netperf
        red_z "当前配置信息如下:"
        red_z_green_z "日志保存路径--->" "[ $netperf_log_dir ]"
        red_z_green_z "对端测试地址--->" "[ $d_ip ]"
        red_z_green_z "测试次数设置--->" "[ $sum_netperf ]"

        input "按回车开始进入测试并删除-->[ $netperf_log_dir ]路径下所有文件" d

        red_z_green_z "正在执行--->" "[  rm -rf ${netperf_log_dir} ]"
        rm -rf ${netperf_log_dir}

        red_z_green_z "正在执行--->" "[ mkdir -p $netperf_log_dir ]"
        mkdir -p $netperf_log_dir

        red_z_green_z '正在检测对端是否能够连接--->' "[ $d_ip ]"
        ping $d_ip -c 3 > /dev/null
        if [ $? == '0' ];then
            green_zt '对端连接成功'
            for((i=1;i<=${sum_netperf};i++));do
                red_z_green_z "正在进行----->" "第[ ${i} ]轮测试"
                red_z_green_z "如需终止请执行--------->" "[ sudo kill -9 $$ ]"
                red_z_green_z "执行命令--->" "[ netperf -t TCP_CRR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_CRR${i} ]"
                netperf -t TCP_CRR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_CRR${i}
                chek_status "$?" "第[ $i ]测试--->[ TCP_CRR ]" 'q'

                red_z_green_z "执行命令--->" "[ netperf -t TCP_RR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_RR${i} ]"
                netperf -t TCP_RR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_RR${i}
                chek_status "$?" "第[ $i ]测试--->[ TCP_RR ]" 'q'

                red_z_green_z "执行命令--->" "[ netperf -t TCP_STREAM -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_STREAM${i} ]"
                netperf -t TCP_STREAM -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/TCP_STREAM${i}
                chek_status "$?" "第[ $i ]测试--->[ TCP_STREAM ]" 'q'

                red_z_green_z "执行命令--->" "[ netperf -t UDP_RR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/UDP_RR${i} ]"
                netperf -t UDP_RR -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/UDP_RR${i}
                chek_status "$?" "第[ $i ]测试--->[ UDP_RR ]" 'q'

                red_z_green_z "执行命令--->" "[ netperf -t UDP_STREAM -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/UDP_STREAM${i} ]"
                netperf -t UDP_STREAM -H ${d_ip} -l 60 | tee -a ${netperf_log_dir}/UDP_STREAM${i}
                chek_status "$?" "第[ $i ]测试--->[ UDP_STREAM ]" 'q'
            done
            green_zt "测试完成"
            red_z_green_z "测试结果查看命令--->" "[ cd ${netperf_log_dir}/&&ls ]"
        else
            red_zt_bg "对端[ $d_ip ]使用PING连接检测--->" "连接失败,本次测试取消"
        fi
    else
        red_zt_bg "未配置日志路径" "变量：netperf_log_dir"
    fi
}
if [[ "$1" == 'f' ]];then
    if [[ -e './item.sh' ]];then
        source ./item.sh
        test_netperf
    else
        echo -e "请进入目录:[ spzxs/ ]再执行脚本"
    fi
else
    if [[ -z "$1" ]];then
        echo -e "请在脚本执行的后面加上一个参数直接进行测试，例如：
bash spzx/test/netperf.sh f"
    fi
fi